package utils

import (
	"gopkg.in/yaml.v3"
	"os"
	"path/filepath"
)

// Database 数据库配置
type Database struct {
	Host     string `yaml:"host"`
	Port     int    `yaml:"port"`
	User     string `yaml:"user"`
	Password string `yaml:"password"`
	Database string `yaml:"database"`
}

// Server web服务配置
type Server struct {
	Host string `yaml:"host"`
	Port int    `yaml:"port"`
}

// Huawei 华为云配置
type Huawei struct {
	Ak string `yaml:"ak"`
	Sk string `yaml:"sk"`
}

// Jwt jwt配置
type Jwt struct {
	Secret string `yaml:"secret"`
}
type Config struct {
	Database `yaml:"database"`
	Server   `yaml:"server"`
	Huawei   `yaml:"huawei"`
	Jwt      `yaml:"jwt"`
}

// LoadConfig 读取配置文件
func LoadConfig() *Config {

	// 项目中路径,通常使用的绝对路径

	// 拼接配置文件路径
	configPath := filepath.Join(GetProjectPath(), "internal/config/config.yaml")

	// 读取配置文件,将配置信息绑定到一个结构体变量
	config := &Config{}
	dataBytes, err := os.ReadFile(configPath)
	if err != nil {
		panic(err)
	}
	err = yaml.Unmarshal(dataBytes, config)
	if err != nil {
		panic(err)
	}

	return config
}
